package com.hzspace.elasticsearch.controller;

import com.hzspace.elasticsearch.component.ArticleComponent;
import com.hzspace.elasticsearch.entity.Article;
import com.hzspace.elasticsearch.repository.ArticleRepository;
//import org.elasticsearch.index.query.QueryBuilders;
import org.springframework.data.domain.PageRequest;
//import org.springframework.data.domain.Pageable;
//import org.springframework.data.domain.Sort;
//import org.springframework.data.elasticsearch.core.ElasticsearchRestTemplate;
//import org.springframework.data.elasticsearch.core.IndexOperations;
//import org.springframework.data.elasticsearch.core.mapping.IndexCoordinates;
//import org.springframework.data.elasticsearch.core.query.IndexQuery;
//import org.springframework.data.elasticsearch.core.query.IndexQueryBuilder;
import org.springframework.data.elasticsearch.core.query.NativeSearchQueryBuilder;
import org.springframework.web.bind.annotation.*;

import javax.annotation.Resource;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;

/**
 * TODO
 *
 * @Version 1.0
 * @Author hz
 * @Date 2020/11/25 18:06
 */
@RestController
@RequestMapping("article")
public class ArticleController {

    @Resource
    ArticleRepository articleRepository;
    @Resource
    ArticleComponent articleComponent;
//    @Resource
//    private ElasticsearchRestTemplate elasticsearchTemplate;

    @GetMapping
    public Object get(@RequestParam String text){
        return articleRepository.findAllByTitleLikeOrContentLike(text, text);
    }

//    @GetMapping("/createIndex")
//    public Object index(){
//        elasticsearchTemplate.createIndex(Article.class);
//        return "OK";
//    }

//    @GetMapping("/getIndex")
//    public Object getIndex(){
//        Article article = new Article();
//        article.setContent("七个");
//        IndexQuery indexQuery = new IndexQueryBuilder().withObject(article).build();
//        IndexOperations indexOperations = elasticsearchTemplate.indexOps(IndexCoordinates.of("article"));
//        return "OK";
//    }

    @GetMapping("list")
    public Object list(){
        return articleRepository.findAll();
    }

//    @GetMapping("/search")
//    public Object search(@RequestParam String key) {
//        // 构建查询条件
//        NativeSearchQueryBuilder queryBuilder = new NativeSearchQueryBuilder();
//        // 添加基本分词查询
//        queryBuilder.withQuery(QueryBuilders.matchQuery("content", key));
//        // 搜索，获取结果
//        return articleRepository.search(queryBuilder.build());
//    }

    @GetMapping("/searchContentLike")
    public Object searchContentLike(@RequestParam String content) {
        // 搜索，获取结果
        return articleRepository.findByContentLike(content, PageRequest.of(1, 1000));
    }

    @GetMapping("/searchContent")
    public Object searchContent(@RequestParam String content) {
        // 搜索，获取结果
        return articleRepository.findByContent(content, PageRequest.of(1, 1000));
    }

    @GetMapping("/init")
    public Object init(){
        String content = "啥也没有";
        String content1 = "大家好，我是雨天，因为刚好出生在雨天，老爸又刚好姓夏，于是“下雨天”就首发出场了，而且妈妈也希望我如雨后春笋、天天向上哦！呵呵后来因为一部分人实在不忍心在晴朗的天气里叫我雨天，为避免引起“混乱”，就只好舍弃了这个颇有个性的简单名字，退而成“小名“了。我的大名也简单，其实就一个“翌”字，因为我出生的日子刚好是爸爸妈妈结婚2周年纪念日的第二日。“夏翌”谐音宁波话“暇意”，大家希望我暇暇意意，呵呵，有点嫌”翌”字太文绉绉，就把它给拆了，一分为二成羽立了。";
        String content2 =  "大家都说我是个阳光女孩，因为我是开心果啊。我老是坐不住，呵呵，能跟小椅子成为好朋友，是老师和爸爸妈妈现在的最大心愿。我喜欢跳舞，但最好能跟着音乐自己起舞，不用按老师的要求练基本功；我喜欢画画，但最好是信手涂鸦，把小朋友的脸画成绿色也没关系；我喜欢溜冰，但最有趣的还是约上三五好友，一起练习如何摔跤……";
        String content3 =  "昀昀是我在妈妈肚子里时的小名哦，我的大名叫曹铁瀛，妈妈怀我的时候和单位里的阿姨们玩牌经常是百战百胜，阿姨们说是因为我的缘故，干脆就叫“天赢”好了，爸妈取其谐音，就变成了“铁瀛”";
        String content4 =   "嘿！我——21号来报到了！智诰、诰诰、阿诰，你们爱怎么叫就怎么叫吧！反正都是我！我的名字是奶奶请一名先生取的，虽然有点迷信，但寄托了全家人的祝福！";
        String content5 =   "还是汽车发烧友，小轿车、大卡车、集装箱、大客车、翻斗车、压路机……应有尽有（就差拖拉机还没有报到）。我常在家练习倒车、移库、爬坡、过单轨桥，考取驾照不成问题！！当然我也模拟制造几起车祸，掉进大河，深沟，追尾事故，因为那时我又能大显身手，汽车的零件装了又拆，拆了又装……哈哈！！角角落落都是我的杰作，缺胳膊少腿的，七零八落的，尽管汽车多，可完完整整的没几辆！这下，又有理由去买车啦！";
        String content6 =   "我还喜欢画画。从小我就拿着笔画一个个的大圆圈，每天乐此不疲，整整画了半年多圆圈呢！够有毅力的吧！老师说我构图线条流畅，就是那样练出来的哦！以后我一定会继续努力的！可是我不太喜欢看书，妈妈让我看书，我老是心不在焉，左顾右盼，常常惹她不高兴，可我就是不喜欢嘛！";
        String content7 =   "我的性格有点内向、腼腆、不喜欢“显山露水”。我最喜欢体育项目了，最“痴迷”的就是体育频道：乒乓球、羽毛球、台球、足球、篮球、跳水~~，当然我也喜欢打牌（这可是遗传）。";
        String content8 =   "我的个子很高，被称为“帅哥”，因此彼得女孩子的欢心哦，等我长大了，我要娶七个“老婆”，其中三个为：外婆、爸爸和妈妈。 我的目标是考上北大。\n";
        String content9 =   "我当时的第一反应是：这两个字可以跟名人的名字做一个联系，然后做一个介绍。我说你介绍的时候可以跟别人讲：";
        List<Article> list = new ArrayList<>();
        for (int i = 0; i < 10000; i++) {
            Article article = new Article();
            article.setId(i+1);
            int a = i % 10;
            switch (a){
                case 0:
                    article.setContent(content);
                    break;
                case 1:
                    article.setContent(content1);
                    break;
                case 2:
                    article.setContent(content2);
                    break;
                case 3:
                    article.setContent(content3);
                    break;
                case 4:
                    article.setContent(content4);
                    break;
                case 5:
                    article.setContent(content5);
                    break;
                case 6:
                    article.setContent(content6);
                    break;
                case 7:
                    article.setContent(content7);
                    break;
                case 8:
                    article.setContent(content8);
                    break;
                case 9:
                    article.setContent(content9);
                    break;
            }
            article.setTitle("文章");
            list.add(article);
        }
        articleRepository.saveAll(list);
        return "OK";
    }
}
